package br.com.unip.menudroidweb.facade;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

import br.com.unip.menudroidweb.dao.GrupoProdutoDAO;
import br.com.unip.menudroidweb.model.GrupoProduto;

import com.google.gson.Gson;

@Path("/grupoproduto")
public class GrupoProdutoFacade implements Serializable {
	private static final long serialVersionUID = -7914066672489151023L;
	private GrupoProdutoDAO grupoProdutoDAO = new GrupoProdutoDAO();
	
	public void createGrupoProduto(GrupoProduto grupoProduto) {
		grupoProdutoDAO.beginTransaction();
		grupoProdutoDAO.save(grupoProduto);
		grupoProdutoDAO.commitAndCloseTransaction();
	}
	
	public void updateGrupoProduto(GrupoProduto grupoProduto) {
		grupoProdutoDAO.beginTransaction();
		GrupoProduto persistedGrupoProduto = grupoProdutoDAO.find(grupoProduto.getIdGrupoProduto());
		persistedGrupoProduto.setDescricao(grupoProduto.getDescricao());
		grupoProdutoDAO.update(persistedGrupoProduto);
		grupoProdutoDAO.commitAndCloseTransaction();
	}
	
	public GrupoProduto findGrupoProduto(int grupoProdutoId) {
		grupoProdutoDAO.beginTransaction();
		GrupoProduto grupoProduto = grupoProdutoDAO.find(grupoProdutoId);
		grupoProdutoDAO.closeTransaction();
		return grupoProduto;
	}
	
	public List<GrupoProduto> listAll() {
		grupoProdutoDAO.beginTransaction();
		List<GrupoProduto> grupoProduto = grupoProdutoDAO.findAll();
		grupoProdutoDAO.closeTransaction();
		return grupoProduto;
	}

	@GET
	@Path("/listar")
	@Produces("application/json")
	public String listarTodosAndroid() {
		grupoProdutoDAO.beginTransaction();
		ArrayList<GrupoProduto> grupoProduto = (ArrayList<GrupoProduto>) grupoProdutoDAO.findAll();
		grupoProdutoDAO.closeTransaction();
		return new Gson().toJson(grupoProduto);
	}
	
	@GET
	@Path("/listar/{id}")
	@Produces("application/json")
	public String findGrupoProdutoAndroid(@PathParam("id") int grupoProdutoId) {
		grupoProdutoDAO.beginTransaction();
		GrupoProduto grupoProduto = grupoProdutoDAO.find(grupoProdutoId);
		grupoProdutoDAO.closeTransaction();
		return new Gson().toJson(grupoProduto);
	}
	

	public void deleteGrupoProduto(GrupoProduto grupoProduto) {
		grupoProdutoDAO.beginTransaction();
		GrupoProduto persistedGrupoProduto = grupoProdutoDAO.findReferenceOnly(grupoProduto.getIdGrupoProduto());
		grupoProdutoDAO.delete(persistedGrupoProduto);
		grupoProdutoDAO.commitAndCloseTransaction();
	}
}
